package interfaceusuario;

import java.awt.Color;
import java.awt.Component;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;

import propertieslinguagem.SingletonSetaLinguagemEArmazenaResourceBundle;

public class ColorRendererTabelaResultadosDosTestes extends JLabel implements TableCellRenderer  {  
  
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public ColorRendererTabelaResultadosDosTestes() {  
        setOpaque(true); //Devemos fazer isso para o background aparecer  
    }  
  
    public Component getTableCellRendererComponent(  
                            JTable table, Object value,  
                            boolean isSelected, boolean hasFocus,  
                            int row, int column) 
    {  
    	try
    	{
    		String nomeColuna = table.getColumnName(column);
    		
    		SingletonSetaLinguagemEArmazenaResourceBundle conheceLinguagemDoSistema = 
    				SingletonSetaLinguagemEArmazenaResourceBundle.getInstance();
    		String textoResultadoEsperado = conheceLinguagemDoSistema.getString("resultadoEsperadoColorRendererTabelaResultadosDosTestes");
    		String textoVariavelSaida = conheceLinguagemDoSistema.getString("variavelSaidaColorRendererTabelaResultadosDosTestes");
    		String textoResultadoObtido = conheceLinguagemDoSistema.getString("resultadoObtidoColorRendererTabelaResultadosDosTestes");
    		String textoValorObtido = conheceLinguagemDoSistema.getString("valorObtidoColorRendererTabelaResultadosDosTestes");
    		
        	if(nomeColuna.compareTo(textoResultadoEsperado) == 0 || 
        			nomeColuna.contains(textoVariavelSaida) == true)
        	{
        		//estamos na coluna resultado esperado, a proxima coluna sera o obtido
        		int colunaResultadoObtido = column + 1;
        		String resultadoEsperado = table.getValueAt(row, column).toString();
        		String resultadoObtido = table.getValueAt(row, colunaResultadoObtido).toString();
        		
        		if(resultadoEsperado.compareTo(resultadoObtido) == 0)
        		{
        			setBackground(Color.GREEN);
        		}
        		else
        		{
        			setBackground(Color.RED);
        		}
        		
        	}
        	else if(nomeColuna.compareTo(textoResultadoObtido) == 0 || nomeColuna.contains(textoValorObtido) == true)
        	{
        		//estamos na coluna resultado obtido, a coluna anterior sera o esperado
        		int colunaResultadoEsperado = column - 1;
        		String resultadoEsperado = table.getValueAt(row, colunaResultadoEsperado).toString();
        		String resultadoObtido = table.getValueAt(row, column).toString();
        		
        		if(resultadoEsperado.compareTo(resultadoObtido) == 0)
        		{
        			setBackground(Color.GREEN);
        		}
        		else
        		{
        			setBackground(Color.RED);
        		}
        	}
        	
        	setText(table.getValueAt(row, column).toString());
        	
            return this;   
    	}
    	catch(Exception e)
    	{
    		return this;
    	}
    }
    

}
